﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Telerik.WinControls;

namespace Sistema_de_Patrimonio.SDP_UI.Articulos
{
    public partial class Articulos_Baja : Telerik.WinControls.UI.RadForm
    {
        public Articulos_Baja()
        {
            InitializeComponent();
        }

        public DataTable ArticulosTemporal;
        public bool primero = true;

        private void Articulos_Baja_Load(object sender, EventArgs e)
        {
           
        }
         
        
        
        private DataTable CargarTabla(UInt32 Resolucion_ID)
        {
            ArticulosTemporal = CrearTabla();
            SDP_DAL.Articulo_DAL Articulo = new SDP_DAL.Articulo_DAL();
            DataTable TablaAuxiliar = Articulo.ArticuloLoadResolucion(Resolucion_ID).Tables[0];

            foreach (DataRow Fila in TablaAuxiliar.Rows)
            {
                DataRow Row = ArticulosTemporal.NewRow();
                Row["Inventario"] = Convert.ToUInt32(Fila[0]);
                Row["Cuenta"] = Convert.ToUInt32(Fila[1]);
                Row["Descripcion"] = Fila[2].ToString();
                Row["Dependencia"] = Convert.ToUInt32(Fila[3]);
                Row["Tipo"] = 0;
                ArticulosTemporal.Rows.Add(Row);
            }
            return ArticulosTemporal;
        }

        private DataTable AgregarArticulo()
        {
            DataRow Fila = ArticulosTemporal.NewRow();
            SDP_DAL.Articulo_DAL Articulo = new SDP_DAL.Articulo_DAL();
            DataSet DatosArticulos = Articulo.ArticuloLoadInventarioCuenta(Convert.ToUInt32(TxtBajaInventario.Text), Convert.ToUInt32(TxtBajaCuenta.Text));

            if (DatosArticulos.Tables[0].Rows.Count > 0)
            {
                Fila["Inventario"] = TxtBajaInventario.Text.Trim();
                Fila["Cuenta"] = TxtBajaCuenta.Text.Trim();
                Fila["Descripcion"] = DatosArticulos.Tables[0].Rows[0].ItemArray[2].ToString().Trim(); ; // Ver si toma la dependencia del articulo
                Fila["Dependencia"] = Convert.ToUInt32(DatosArticulos.Tables[0].Rows[0].ItemArray[4].ToString().Trim()); ; // Ver si toma la dependencia del articulo
                Fila["Tipo"] = 1;
                ArticulosTemporal.Rows.Add(Fila);
            }
            else
            {
                MessageBox.Show("El Artículo solicitado no existe", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Information);
                TxtBajaCuenta.Focus();
            }
            return (ArticulosTemporal);
        }

         private DataTable CrearTabla()
        {
            DataTable ArticulosTMP = new DataTable();

            DataColumn Articulo_Inventario;
            DataColumn Articulo_Cuenta;
            DataColumn Articulo_Descripcion;
            DataColumn Articulo_Dependencia;
            DataColumn Articulo_Tipo;

            Articulo_Inventario = new DataColumn();
            Articulo_Inventario.DataType = Type.GetType("System.String");
            Articulo_Inventario.ColumnName = "Inventario";
            ArticulosTMP.Columns.Add(Articulo_Inventario);

            Articulo_Cuenta = new DataColumn();
            Articulo_Cuenta.DataType = Type.GetType("System.UInt32");
            Articulo_Cuenta.ColumnName = "Cuenta";
            ArticulosTMP.Columns.Add(Articulo_Cuenta);

            Articulo_Descripcion = new DataColumn();
            Articulo_Descripcion.DataType = Type.GetType("System.String");
            Articulo_Descripcion.ColumnName = "Descripcion";
            ArticulosTMP.Columns.Add(Articulo_Descripcion);

            Articulo_Dependencia = new DataColumn();
            Articulo_Dependencia.DataType = Type.GetType("System.UInt32");
            Articulo_Dependencia.ColumnName = "Dependencia";
            ArticulosTMP.Columns.Add(Articulo_Dependencia);

            Articulo_Tipo = new DataColumn();
            Articulo_Tipo.DataType = Type.GetType("System.UInt16");
            Articulo_Tipo.ColumnName = "Tipo";
            ArticulosTMP.Columns.Add(Articulo_Tipo);

            return ArticulosTMP;
        }

         private void TxtBajaResolucion_Validated(object sender, EventArgs e)
         {
             if (TxtBajaResolucion.Text.Length > 0 && Convert.ToInt32(TxtBajaResolucion.Text) > 0)
             {
                 ArticulosTemporal = CargarTabla(Convert.ToUInt32(TxtBajaResolucion.Text));
                 GvArticulos.DataSource = ArticulosTemporal;
                 GvArticulos.Columns[4].IsVisible = false;
             }
             else
                 MessageBox.Show("Debe ingresar un valor mayor a 0", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Information);
         }

         private void BajaCancelar_Click(object sender, EventArgs e)
         {
             DialogResult respuesta;
             respuesta = MessageBox.Show("¿Desea salir sin conservar los cambios realizados en las bajas?\n", "Cambios ...", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

             if (respuesta == DialogResult.Yes)
             {
                 this.Close();
             }
         }

         private void radButton3_Click(object sender, EventArgs e)
         {
             GvArticulos.DataSource = AgregarArticulo();
             TxtBajaInventario.Text = "";
             TxtBajaCuenta.Text = "";
             GvArticulos.Columns[4].IsVisible = false;
             GvArticulos.Refresh();
         }

         private void radButton4_Click(object sender, EventArgs e)
         {
             GvArticulos.SelectedRows[0].Cells[4].Value = 2;
             GvArticulos.SelectedRows[0].IsVisible = false;
         }

         private void BajaAceptar_Click(object sender, EventArgs e)
         {
             foreach (DataRow Fila in ArticulosTemporal.Rows)
             {
                 UInt32 Resolucion = Convert.ToUInt32(TxtBajaResolucion.Text);
                 SDP_DAL.Articulo_DAL Actualizar = new SDP_DAL.Articulo_DAL();
                 if (Convert.ToUInt32(Fila["Tipo"]) == 2) Resolucion = 0;
                 Actualizar.ArticuloUpdateResolucion(Convert.ToUInt32(Fila["Inventario"]), Convert.ToUInt32(Fila["Cuenta"]), Resolucion);
             }
             MessageBox.Show("Se dieron de Baja los Artículos Exitosamente", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Information);
             this.Close();
         }

         private void TxtBajaResolucion_KeyPress(object sender, KeyPressEventArgs e)
         {
             if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
             {
                 e.Handled = true;
             }

             if (e.KeyChar == (char)(Keys.Enter))
             {
                 e.Handled = true; SendKeys.Send("{TAB}");
             }
             base.OnKeyPress(e);
         }

         private void TxtBajaInventario_KeyPress(object sender, KeyPressEventArgs e)
         {
             if (e.KeyChar == (char)(Keys.Enter))
             {
                 e.Handled = true; SendKeys.Send("{TAB}");
             }
             base.OnKeyPress(e);
         }

         private void TxtBajaCuenta_KeyPress(object sender, KeyPressEventArgs e)
         {
             if (e.KeyChar == (char)(Keys.Enter))
             {
                 e.Handled = true; SendKeys.Send("{TAB}");
             }
             base.OnKeyPress(e);
         }
    }
}
